package com.yeung.exam;


import java.util.Scanner;

public class 最长递增子序列 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] nums = new int[n];
        int[] part = new int[n];//记录上升序列的长度,part[i]表示以arr[i]结尾的子序列的最长长度
        //输入子序列
        for (int i = 0; i < n; i++) {
            int a = sc.nextInt();
            nums[i] = a;
        }
        int len = 0;
        //        开始计算最长子序列
        for (int i = 0; i < n; i++) {
            part[i] = 1;//假设该最长子序列(从0-i的序列)只有 num[i]自己 ,所以长度为1
            //找到i之前每一个数,对应的子序列, 如1,2,3  当前i=2;
            //则之前的子序列时1; 1,2;   然后分别拿到之前子序列的最大长度
            for (int j = 0; j < i; j++) {
                //如果i之前存在比它小的数, 且该数的子序列+1 (即加上i)之后的长度比i的子序列长度(初始为1)大, 则更新i的最大序列长度
                if (nums[i] > nums[j] && part[j] + 1 > part[i]) {
                    part[i] = part[j] + 1;
                }
            }
            len = Math.max(len, part[i]);
        }
        System.out.println(len);
    }
}